`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2025/06/23 17:13:05
// Design Name: 
// Module Name: adder_top
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////

module adder_top (
    input clk,              // 时钟信号
    input reset,            // 复位信号
    input [3:0] A_switch,   // 4位开关输入 A
    input [3:0] B_switch,   // 4位开关输入 B
    output [3:0] Sum,       // 加法结果
    output Cout             // 最终进位
);


    wire sum_temp_0, sum_temp_1, sum_temp_2, sum_temp_3;
    wire cout_temp_0, cout_temp_1, cout_temp_2, cout_temp_3;

 
    full_adder FA0 (
        .A(A_switch[0]), .B(B_switch[0]), .Cin(0), .Sum(sum_temp_0), .Cout(cout_temp_0)
    );
    
    full_adder FA1 (
        .A(A_switch[1]), .B(B_switch[1]), .Cin(cout_temp_0), .Sum(sum_temp_1), .Cout(cout_temp_1)
    );
    
    full_adder FA2 (
        .A(A_switch[2]), .B(B_switch[2]), .Cin(cout_temp_1), .Sum(sum_temp_2), .Cout(cout_temp_2)
    );
    
    full_adder FA3 (
        .A(A_switch[3]), .B(B_switch[3]), .Cin(cout_temp_2), .Sum(sum_temp_3), .Cout(cout_temp_3)
    );


    assign Sum = {sum_temp_3, sum_temp_2, sum_temp_1, sum_temp_0};
    assign Cout = cout_temp_3;

endmodule
